// vim:sw=4:ai:aw
#pragma once
#ifndef	__Main_h__
#define	__Main_h__

// STL includes
#include <list>		// STL list container
using std::list;

// eigen includes
#include "Area.h"	// class Area
#include "Allocator.h"	// baseclass Allocator

// Even wat handige afkortingen ...
typedef list<Area*> AreaList; // een Arealist container
typedef AreaList::iterator ALIterator; // een AreaListIterator


//
// De namaak applicatie/tester/meter
//
class Main {
private:
	Allocator * beheerder; // huidige beheers module
	int size; // de omvang van het fiktieve geheugen
	AreaList objecten; // lijst van de gekregen gebieden
	// PAS OP: Anders dan in het C++ diktaat is dit GEEN ''pointer naar''
	// 	   maar een "automatisch" gecreeerd object.
	bool tflag; // true als we code willen "testen"
	// anders gaan we "meten".

public:
	Main(Allocator * beheerder, int size);
	~Main();

	void setTesten() {
		tflag = true;
	}
	void setMeten() {
		tflag = false;
	}

	void testing();
	void randomscenario(int aantal);

	void vraagGeheugen(int omvang);
	void vergeetOudste();
};

#endif	/*Main_h*/
